Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and includes random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can provide persistent data by retaining stored information when not powered and can include NAND flash memory, NOR flash memory, read only memory (ROM), electrically erasable programmable ROM (EEPROM), erasable programmable ROM (EPROM), and phase change random access memory (PCRAM), among others.
Memory devices can be combined to form a solid state drive (SSD). An SSD can include non-volatile memory, e.g., NAND flash memory and NOR flash memory, and/or can include volatile memory, e.g., DRAM and SRAM, among various other types of non-volatile and volatile memory.
An SSD can be used to replace hard disk drives as the main storage device for a computer, as the SSD can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption. For example, SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may ameliorate seek time, latency, and other electro-mechanical delays associated with magnetic disk drives. SSD manufacturers can use non-volatile flash memory to create flash SSDs that may not use an internal battery supply, thus allowing the drive to be more versatile and compact.
An SSD can include a number of memory devices, e.g., a number of memory chips (as used herein, “a number of” something can refer to one or more such things; for example, a number of memory devices can refer to one or more memory devices). As one of ordinary skill in the art will appreciate, a memory chip can include a number of dies. Each die can include a number of memory arrays and peripheral circuitry thereon. A memory array can include a number of planes, with each plane including a number of physical blocks of memory cells. Each physical block can include a number of pages of memory cells that can store a number of sectors of data.
Memory systems (e.g., a solid state drive) may be coupled to a host computer system by a communication interface (e.g., bus). Serial Advanced Technology Attachment (SATA) is a high speed serial computer bus primarily designed for transfer of data between the host computer system (e.g., motherboard) and mass storage devices, such as hard disk drives, optical drives, and solid state drives. SATA interfaces provide fast data transfer, ability to remove or add devices while operating (hot swapping when the operating system supports it), thinner cables that let air cooling work more efficiently, and reliable operation.
Whether to safeguard information stored in a portable memory system (such as a flash drive), or to protect the confidentiality of information stored in a memory system portion of a computer system (such as in an internal solid state drive), or as a means to secure data processing on an unsecured communications path (such as the Internet), encryption has been used to encode data. Various encryption/decryption algorithms exist. The Advanced Encryption Standard (AES) is a block cipher adopted as an encryption standard by the U.S. government, replacing its predecessor, the Data Encryption Standard (DES). AES is an encryption standard which non-strictly implements the Rijndael algorithm. AES is implemented as a symmetric block cipher with 128 bit data blocks and a key size that can be chosen from 128, 192, or 256 bits. AES may be implemented by software and/or hardware, may be relatively fast (relative to other encryption methodologies), is rather secure, is relatively easy to implement, and requires little memory. As an encryption standard, AES is currently being deployed on a large scale.
An AES engine receives an input (e.g., plaintext), and produces an encrypted output (e.g., ciphertext). There are several possible implementation modes of the AES standard. For example, the algorithm may be employed as an electronic code book (ECB), with no feedback. An implementation of the AES standard may have a high data rate. Several AES designs achieve a high data rate based on pipelined architectures when employing the AES algorithm as an ECB.
However, the AES standard is most often used in one of several feedback modes of operation for added security, including Cipher Block Chaining (CBC), Cipher Feedback (CFB), and Output Feedback (OFB). In these modes, the output of the AES algorithm is fed back to the input. The AES feedback modes of operation can introduce latencies to pipelined data processing.